import { SingleProductSign } from 'src/models/singleProductSign';
import { NullablePromise } from "pao-aop";
import { DataList } from "../business/models/user";
import { SignAttributeLabel, SignAttributeIndex, SignAttributeType, SignType, ModuleSort } from './baseSign';

export interface CustomAttribute {
    format?: string;
    label?: string;
    value?: any;
}

/**
 * 品类标识
 */
export interface CategorySign {
    /** 
     * key编号（前台使用，antd中的table中使用，后台忽略该字段） 
     */
    key?: string;
    /**
     * 索引
     */
    id?: string;
    /**
     * 品类标识
     */
    handle_code?: string;
    /**
     * 品类名称
     */
    handle_name?: string;
    /**
     * 标识分类
     */
    handle_type?: string;
    /**
     * 用户ID
     */
    user_id?: string;
    /**
     * 二维码图片
     */
    rc_code?: string;
    /**
     * 创建时间
     */
    create_date?: string;
    /**
     * 修改时间
     */
    modify_date?: string;
    /**
     * 产品类型
     */
    product_type?: string;
    /**
     * 自定义属性
     */
    custom_attribute?: CustomAttribute[];
    /**
     * 企业名称
     */
    company_handle_name?: string;
    /**
     * 企业标识码
     */
    company_handle_code?: string;
    /**
     * 品类图片
     */
    category_picture?: string[];
    /** 模块排序及显示 */
    module_sort?: ModuleSort;
    /** 企业模块排序 */
    company_show_sort?: number;
    /** 企业模块是否显示 */
    company_is_show?: boolean;
    /** 品类模块排序 */
    category_show_sort?: number;
    /** 品类模块是否显示 */
    category_is_show?: boolean;
}

export class CategorySignAttributeLabel extends SignAttributeLabel {
    handle_name = '品类名称';
    handle_type = "品类标识";
    user_id = "用户ID";
    rc_code = "二维码图片";
    create_date = "创建时间";
    modify_date = "修改时间";
    product_type = "产品类型";
    company_handle_name = "企业名称";
    company_handle_code = "企业标识码";
    category_picture = "品类图片";
}

export class CategorySignAttributeIndex extends SignAttributeIndex {
    handle_name = 1;
    handle_type = 2;
    user_id = 3;
    rc_code = 4;
    create_date = 5;
    modify_date = 6;
    product_type = 7;
    company_handle_name = 7;
    company_handle_code = 9;
    category_picture = 10;
}

export class CategorySignAttributeType extends SignAttributeType {
    handle_name = SignType.Text;
    handle_type = SignType.Text;
    user_id = SignType.Text;
    rc_code = SignType.Image;
    create_date = SignType.Text;
    modify_date = SignType.Text;
    product_type = SignType.Text;
    company_handle_name = SignType.Text;
    company_handle_code = SignType.Text;
    category_picture = SignType.Image;
}

/**
 * 名称:品类模板标识服务接口
 * @description 品类模板标识服务接口
 * @author cxl
 */
export class ICategoryTemplateSingService {
    /**
     * 查询列表
     * @param object 条件
     * @param page_num 页码
     * @param num 条数
     */
    get_category_list?(object?: Object, page_num?: number, num?: number): NullablePromise<DataList<CategorySign>> {
        return undefined;
    }

    /**
     * 插入
     * @param categorySign 标识
     */
    insert?(categorySign?: Object): NullablePromise<boolean> {
        return undefined;
    }

    /**
     * 删除
     * @param ids 索引列表
     */
    delete_category?(ids?: string[]): NullablePromise<boolean> {
        return undefined;
    }

    /**
     * 获取品类信息
     * @param id 索引
     */
    get_category?(id?: string): NullablePromise<CategorySign> {
        return undefined;
    }

    /**
     * 查询列表
     * @param object 条件
     * @param page_num 页码
     * @param num 条数
     */
    get_single_list?(object?: Object, page_num?: number, num?: number): NullablePromise<DataList<SingleProductSign>> {
        return undefined;
    }
    /**
     * 新增排序
     */
    insert_preview?(data: CategorySign): NullablePromise<any | undefined> {
        return undefined;
    }
    /**
     * 是否允许删除
     */
    is_allow_delete?(id: string[]): NullablePromise<boolean | undefined> {
        return undefined;
    }
}
